package com.sy.mapper;

import com.sy.entity.Homework;
import com.sy.vo.ConditionVo;
import com.sy.vo.HomeworkUpdateVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author:fma
 * @Date: 2021/10/12 10:52
 */
public interface HomeWorkMapper {
    /**
     * 回显全部作业
     * @param
     * @return 所有的作业
     */
    List<Homework> getAllHomes();

    /**
     * 回显该学生的全部作业
     * @param homework 作业
     * @return 所有的作业
     */
    List<Homework> getAllHomesBySno(Homework homework);

    /**
     * 回显该教师的全部作业
     * @param tno 教师学号
     * @return 当前教师布置的作业
     */
    List<Homework> getHomeByTno(Integer tno);

    /**
     * 回显该教师的全部作业
     * @param id 作业id
     * @return 当前id指定的作业
     */
    Homework getHomeById(Integer id);

    /**
     * 根据标题查询作业是否存在全部作业
     * @param title 作业标题
     * @return 当前作业标题的作业
     * @Author:范富强
     */
    Homework selectHomeworkByTitle(String title);

    /**
     * 根据标题查询作业是否存在全部作业
     * @param title 作业标题
     * @return 当前作业标题的作业
     * @Author:范富强
     */
    Homework getHomeworkByTitle(String title);

    /**
     * 添加作业
     * @param homework 添加的作业
     * @return 添加的作业
     * @Author:范富强
     */
    boolean publishHomework(Homework homework);

    /**条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索作业信息
     * @param tno 教师编号
     * @param title 作业标题
     * @param createDate 发布的时间
     * @return 根据条件查询得到的作业信息
     */
    List<Homework> getHomeByConditions( @Param("tno") Integer tno,
                                        @Param("title") String title,
                                        @Param("createDate") String createDate);


    /**条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索作业信息
     * @param className 该学生的班级
     * @param grade 该学生的年级
     * @param tno 教师的编号
     * @param title 作业的标题
     * @return 根据条件查询得到的作业信息
     */
    List<Homework> getHomeWorksByConditions(@Param("className") String className,
                                            @Param("grade") String grade,
                                            @Param("tno") Integer tno,
                                            @Param("title") String title);

    /**条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索作业信息
     * @param homework 作业
     * @return 查询得到的作业信息
     */
    List<Homework> getHomeworkByTitleName(Homework homework);

    /**查询作业的信息，教师的编号或作业的标题或发布时间来搜索作业信息
     * @param homework 作业
     * @return 查询得到的作业信息
     */
    List<Homework> getHomeworkByclassName(Homework homework);

    /**
     * 删除发布的作业
     *
     * @param id 作业的id
     * @return 是否删除成功
     */
    boolean deleteHomeworkById(Integer id);


    /**
     * @Author 范富强
     * 条件查询作业的信息，教师的编号或作业的标题或发布时间来搜索作业信息
     * @param tno 教师编号
     * @param title 标题
     * @return 根据条件查询得到的作业信息
     */
    List<Homework> getHomeByConditions2(@Param("tno") Integer tno,
                                        @Param("title") String title);

    /**
     * @Author 范富强
     *
     * @param homeworkUpdateVo
     * @return 是否更新成功
     */
    boolean updateHomeWork(HomeworkUpdateVo homeworkUpdateVo);

    boolean updateHomeWorkMarks(@Param("id") Integer id,
                                @Param("mark") Integer mark);

    List<String> getHomeFilePathsByHid2(@Param("hid") Integer hid,
                                        @Param("sno") Integer sno);
}
